function successfulPairs(spells, potions, success) {
  // 对药水数组进行排序
  potions.sort((a, b) => a - b);
  const m = potions.length;
  const result = [];

  for (const s of spells) {
    // 计算需要的最小药水能量
    // 使用 Math.ceil 处理小数情况，确保乘积大于等于 success
    const minPotion = Math.ceil(success / s);

    // 二分查找第一个大于等于 minPotion 的位置
    let left = 0,
      right = m;
    while (left < right) {
      const mid = Math.floor((left + right) / 2);
      if (potions[mid] >= minPotion) {
        right = mid;
      } else {
        left = mid + 1;
      }
    }

    // 从找到的位置到末尾的所有药水都能形成成功组合
    result.push(m - left);
  }

  return result;
}
